<?php
namespace app\service;

/**
 * 模板服务
 * */
class TemplateService {
    /**
     * 渲染
     * @param $templatePath 模板路径
     * @param $extract 绑定到 V 层的参数 ['viewKey' => $var]
     * */
    public static function render($templatePath, $extract = []) {
        // 获取模板位于服务器上的绝对地址，防止include()的错乱
        $invokeMethods = debug_backtrace();
        $invokeMethod = $invokeMethods[0];
        $filePath = $invokeMethod['file'];
        $lastNsPos = strripos($filePath, DIRECTORY_SEPARATOR);
        $fileDirectory = substr($filePath, 0, $lastNsPos);
        $templatePath = $fileDirectory . DIRECTORY_SEPARATOR . $templatePath;

        // 开启ob，渲染当前模板的内容
        ob_start();
        // 模板传值
        extract($extract);
        // 渲染模板
        include($templatePath);
        // 渲染结果放到模板变量中
        return ob_get_clean(); 
    }
}